PHP、MySQL分库分表中间件、支持协程 |
您所在的位置:网站首页 › 中间件 php › PHP、MySQL分库分表中间件、支持协程 |
PHP、MySQL分库分表中间件,需要依赖PDO,PHP分库分表,支持协程
说明
(1)已支持协程,使用协程必须在主进程开启 \Swoole\Runtime::enableCoroutine(); (2)支持分片规则自定义,支持实现复杂的分片,分片规则是依赖输入的where条件或者insert插入的数据来的 安装composer require lys/php-sharding-pdo 项目地址 (请查看如下地址,获取最新文档)https://github.com/1107012776/PHP-Sharding-PDO 自动化测试(1)先要配置tests/Config/.env ,测试环境数据库链接 .env文件 [database] host=localhost username=root password=testpassword(2)然后执行如下脚本 非协程 php vendor/bin/phpunit tests/IntegrationTest.php --filter testExecStart 协程 php vendor/bin/phpunit tests/IntegrationCoroutineTest.php --filter testExecStart 注意(1)协程模式必须在主进程开启这个东西,否则会出现死锁 \Swoole\Runtime::enableCoroutine(); (2)协程中不能使用pdo长链接,在高并发的情况下,会出现如下异常 PHP Fatal error: Uncaught Swoole\Error: Socket#30 has already been bound to another coroutine#2, reading of the same socket in coroutine#4 at the same time is not allowed (3)Replace into自增主键,并发量大的时候可能出现返回false和死锁的,所以不适合高并发项目的使用,高并发,请使用雪花算法等一些分布式主键方案 (4)非协程情况下,并且常驻内存,如workerman框架请使用如下代码释放上下文,上下文管理为单例,所以需要该方法释放单例实例,一般是在一个请求结束,或者一个任务结束,释放完上下文,请重新new Model实例才行,因为释放上下文,清理了上下文中的PDO实例,方法如下: |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |